package util;

import java.awt.AWTEvent;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;

import javax.swing.JFrame;

import AccionBoton.AccionClickRaton;

public class BarridoMitad extends Barrido{
	
	private int mitad;
	
	public BarridoMitad(Teclado teclado, JFrame frame, int tiempo){
		//El tercer parametro es el numero de columnas que intervienen en el barrido. Si le pasamos 0, lo inicializamos a la mitad (ver superclase)
		super(teclado, frame, 0, 0, tiempo);
		_teclado.desactivarTeclado();
		this.barrer();
	}
	
	public void barrer(){
		salir = false;
		Robot r = null;
		try {
			r = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
		}   
		_frame.setContentPane(_teclado);
		_teclado.refrescar();
		Toolkit t = Toolkit.getDefaultToolkit();
		t.addAWTEventListener(new AccionClickRaton(this), AWTEvent.MOUSE_EVENT_MASK);
		
		mitad = 0;
		
		while(!salir){
			despintarTeclado();
			pintarPrimeraMitad();
			mitad = 0;
			_teclado.refrescar();
			r.delay(_tiempo);
			if(salir) break;
			despintarTeclado();
			_teclado.refrescar();
			pintarSegundaMitad();
			mitad = 1;
			_teclado.refrescar();
			r.delay(_tiempo);
			if(salir) break;
			despintarTeclado();
			_teclado.refrescar();
		}
		if(!_retroceso){
			despintarTeclado();
			if (mitad == 0) _teclado.setEstado(new BarridoFila(_teclado,_frame,0,_numColumnasBarrido, _tiempo));
			else _teclado.setEstado(new BarridoFila(_teclado,_frame,1,_numColumnas-_numColumnasBarrido, _tiempo));
		}
	}
	
	public void eventoRaton(boolean retroceso){
		_retroceso = retroceso;
		//Si nos llega retroceso, es decir, click derecho
		if(!_retroceso) salir = true;
	}
	
	private void pintarPrimeraMitad(){
		for(int i=0; i<_numFilas; i++)
			for(int j=0; j<_numColumnasBarrido; j++)
				_teclado.pintarBotonPosicion(i, j);
	}
	
	private void pintarSegundaMitad(){
		for(int i=0; i<_numFilas;i++)
			for(int j=_numColumnas-_numColumnasBarrido-(_numColumnas%2); j<_numColumnas;j++)
				_teclado.pintarBotonPosicion(i, j);
	}
}
